package com.cee.admin.common;


import com.cee.common.core.domain.BaseEntity;
import com.cee.common.core.service.BasicService;
import com.cee.common.web.result.Result;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

import static com.cee.common.web.result.ResultBuilder.success;


/**
 * 基本的增加接口 API
 *
 * @author rxliuli
 */
@SuppressWarnings("unused")
public interface BaseAddApi<Service extends BasicService<Entity>, Entity extends BaseEntity> extends BaseDependencyInjectionApi<Service, Entity> {
    Logger log = LoggerFactory.getLogger(BaseAddApi.class);

    /**
     * 通用的添加方法
     *
     * @param entity 需要添加的实体对象
     * @return 添加是否成功，需要以 {@link Result#getData()} 作为判断标准
     */
    @PostMapping("/add")
    default Result<Boolean> add(@RequestBody Entity entity) {
        return using(BaseAddApi.class, service -> success(service.save(entity)));
    }

    /**
     * 通用的批量添加方法
     *
     * @param list 需要批量添加的实体对象列表
     * @return 批量添加是否成功，需要以 {@link Result#getData()} 作为判断标准
     */
    @PostMapping("/add/batch")
    default Result<Boolean> add(@RequestBody List<Entity> list) {
        return using(BaseAddApi.class, service -> success(service.saveBatch(list)));
    }
}
